"""Definition of the Obligacion content type
"""

from zope.interface import implements, directlyProvides

from Products.Archetypes import atapi
from Products.ATContentTypes.content import base
from Products.ATContentTypes.content import schemata

from newguegue.newmunicipios import newmunicipiosMessageFactory as _
from newguegue.newmunicipios.interfaces import IObligacion
from newguegue.newmunicipios.config import PROJECTNAME

ObligacionSchema = schemata.ATContentTypeSchema.copy() + atapi.Schema((

    # -*- Your Archetypes field definitions here ... -*-
    atapi.StringField('title',
                searchable=1,
                isMetadata=0,
                accessor='Title',
                widget=atapi.StringWidget(label='Título',
                                      maxlength=150,
                                      size=30,
                                      label_msgid="label_entry_title",
                                      description_msgid="help_entry_title",
                                      i18n_domain="newguegue.newmunicipios",
                                      description='')),
    atapi.StringField('description',
                searchable=1,
                isMetadata=0,
                accessor='Description',
                widget=atapi.TextAreaWidget(label='Breve descripción',
                                      label_msgid="label_entry_description",
                                      description_msgid="help_entry_description",
                                      i18n_domain="newguegue.newmunicipios",
                                      description='Entre una breve descripción.')),
    atapi.StringField('tipo',
                searchable=1,
                isMetadata=0,
                vocabulary=['Impuesto','Multa','Contribución','Tasa'],
                widget=atapi.SelectionWidget(label='Tipo de obligación',
                        label_msgid='label_entry_tipo',
                        description_msgid='help_entry_tipo',
                        i18n_domain='newguegue.newmunicipios',
                        description='')),
        
        atapi.TextField('costo',
                  searchable=1,
                  required=0,
                  default_content_type='text/html',
                  default_output_type='text/html',
                  allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
                  widget=atapi.RichWidget(label='Costo',
                                    label_msgid="label_entry_costo",
                                    description_msgid="help_entry_costo",
                                    i18n_domain="newguegue.newmunicipios",
                                description="Costos o estructuras de las tablas de costo, impuestos o tasas")),
    atapi.StringField('moneda',
                searchable=1,
                isMetadata=0,
                vocabulary=['Córdobas','Dólares','Euros'],
                widget=atapi.SelectionWidget(label='Moneda: ',
                        label_msgid='label_entry_moneda',
                        description_msgid='help_entry_moneda',
                        i18n_domain='newguegue.newmunicipios',
                        description='')),
    atapi.StringField('institucion',
                searchable=1,
                isMetadata=0,
                widget=atapi.StringWidget(label='Institución Responsable',
                                      maxlength=400,
                                      size=80,
                                      label_msgid="label_entry_institucion",
                                      description_msgid="help_entry_institucion",
                                      i18n_domain="newguegue.newmunicipios",
                                      description='')),
    atapi.StringField('direccion',
                searchable=1,
                isMetadata=0,
                widget=atapi.StringWidget(label='Dirección Física',
                                      maxlength=700,
                                      size=80,
                                      label_msgid="label_entry_direccion",
                                      description_msgid="help_entry_direccion",
                                      i18n_domain="newguegue.newmunicipios",
                                      description='')),
    atapi.StringField('telefono',
                searchable=0,
                isMetadata=0,
                widget=atapi.StringWidget(label='Teléfono',
                                      label_msgid="label_entry_telefono",
                                      description_msgid="help_entry_telefono",
                                      i18n_domain="newguegue.newmunicipios",
                                      description='')),
    atapi.StringField('fax',
                searchable=0,
                isMetadata=0,
                widget=atapi.StringWidget(label='Fax',
                                      label_msgid="label_entry_fax",
                                      description_msgid="help_entry_fax",
                                      i18n_domain="newguegue.newmunicipios",
                                      description='')),
    atapi.TextField('body',
              searchable=1,
              required=0,
              default_content_type='text/html',
              default_output_type='text/html',
              allowable_content_types=('text/plain','text/structured', 'text/html', 'text/restructured'),
              widget=atapi.RichWidget(label='Detalles (Requisitos, Documentos Requeridos, etc.)',
                                label_msgid="label_entry_body",
                                description_msgid="help_entry_body",
                                i18n_domain="newguegue.newmunicipios",
                                description="Descripción completa")),

))

# Set storage on fields copied from ATContentTypeSchema, making sure
# they work well with the python bridge properties.

#ObligacionSchema['title'].storage = atapi.AnnotationStorage()
#ObligacionSchema['description'].storage = atapi.AnnotationStorage()

schemata.finalizeATCTSchema(ObligacionSchema, moveDiscussion=False)

class Obligacion(base.ATCTContent):
    """Obligacions de los municipios"""
    implements(IObligacion)

    portal_type = "Obligacion"
    schema = ObligacionSchema

   # title = atapi.ATFieldProperty('title')
   # description = atapi.ATFieldProperty('description')

atapi.registerType(Obligacion, PROJECTNAME)
